// ResultTrajectory.h
#ifndef RESULT_TRAJECTORY_H
#define RESULT_TRAJECTORY_H

#include <fstream>
#include <map>
// #include <random>
#include <sstream>
#include <string>
#include <unordered_map>
// #include <Eigen/Eigen>
// #include <Eigen/StdVector>

#include "Loader.h"
#include "Statistics.h"
#include "colors.h"
#include "print.h"
#include "quat_ops.h"
#include "AlignTrajectory.h"

namespace ov_eval {
    class ResultTrajectory {
    public:
        ResultTrajectory(std::string path_est, std::string path_gt, std::string alignment_method);
        void calculate_ate(Statistics &error_ori, Statistics &error_pos);
    protected:
        std::vector<double> est_times, gt_times;
        std::vector<Eigen::Matrix<double, 7, 1>> est_poses, gt_poses;
        std::vector<Eigen::Matrix3d> est_covori, est_covpos, gt_covori, gt_covpos;
        std::vector<Eigen::Matrix<double, 7, 1>> est_poses_aignedtoGT;
        std::vector<Eigen::Matrix<double, 7, 1>> gt_poses_aignedtoEST;
    };
}

#endif
